package com.nodecollege.cloud.common.model.po;

import lombok.Data;

import java.util.Objects;

/**
 * Table: upms_menu
 * 版权：节点学院
 *
 * @author LC
 * @date 2020-01-03 23:14:41
 */
@Data
public class UpmsMenu {
    /**
     * 菜单主键
     */
    private Long menuId;
    /**
     * 菜单名称
     */
    private String menuName;
    /**
     * 菜单代码
     */
    private String menuCode;
    /**
     * 菜单类型
     * 0-分类导航
     * 1-菜单页面
     * 2-查询类按钮
     * 3-操作类按钮
     */
    private Integer menuType;
    /**
     * 菜单来源，
     * 0-系统菜单，
     * 1-自定义菜单
     */
    private Integer menuSource;
    /**
     * 图标
     */
    private String icon;
    /**
     * 父级id
     */
    private Long parentId;
    /**
     * 应用id
     * 菜单来源为 0 系统菜单时必填
     */
    private Long appId;
    /**
     * 租户id
     * 菜单来源为 1 自定义菜单时必填
     */
    private Long tenantId;
    /**
     * 路径
     * 资源类型为 分类导航 或 功能页面时必填
     */
    private String path;
    /**
     * 打开方式
     * 资源类型为 功能页面时必填
     * 0-单页方式（前端项目中已经集成好的页面）
     * 1-iframe方式（第三方开发的单页应用）
     */
    private Integer openType;
    /**
     * 接口id 系统菜单有值
     * 菜单来源为 0 系统菜单，菜单类型为2 或者 3 按钮类型时必填
     */
    private Long apiId;
    /**
     * 接口应用名称
     * 资源类型为 按钮事件时必填
     */
    private String applicationName;
    /**
     * 接口地址
     * 资源类型为 按钮事件时必填
     */
    private String apiUrl;
    /**
     * 排序号
     */
    private Integer num;
    /**
     * 状态 -1-已删除，0-不可删除，1-可删除，2-冻结，3-不推荐使用
     */
    private Integer state;
    /**
     * 租户菜单id
     * 不存库
     */
    private Long tenantMenuId;
    /**
     * 角色菜单id
     * 不存库
     */
    private Long roleMenuId;

    @Override
    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (this == obj)
            return true;
        if (obj instanceof UpmsMenu) {
            UpmsMenu vo = (UpmsMenu) obj;
            // 比较每个属性的值 一致时才返回true
            if (vo.getMenuId().equals(this.menuId)) {
                return true;
            }
        }
        return false;
    }
    @Override
    public int hashCode() {
        Long in =  menuId;
        return in.hashCode();
    }
}